<?php
  /**
   * @author EVANDRO DE OLIVEIRA.
   * @category CONTROLLER
   * @package CONTROLLERS.
   * @since 09/05/2012.
   * @last_update 05/05/2012.
   * @copyright 2012.
   * @version 1.0.
   *
   */
  class UnidadesController extends Zend_Controller_Action{
    /**
     * Inicializa a controller, fazendo todas as verificações definidas.
     */
    public function init(){
      $objAuthNamespace = new Zend_Session_Namespace('Zend_Auth');
      
      if(!$objAuthNamespace->session_initialized){
        $this->_redirect('/account/login');
      } 
      
      $this->strTitleP = 'UNIDADES';
      $this->strTitleS = 'Unidade';
    }
    
    /**
     * Action padrão da controller
     */
    public function indexAction(){
      $this->_redirect('unidades/list');
    }
    
    /**
     * Action que listará todos as cidade existentes.
     */
    public function listAction(){
      $this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $this->view->arrFilterFields = array(
        'Sigla' => array(
          'name' => 'ds_sigla', 
          'type' => 'text', 
          'width' => '50', 
          'maxlength' => '5'
        ),
        'Unidade' => array(
          'name' => 'ds_unidade', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '120'
        ),
      );
      
      $this->view->arrTitleList = array(
        'Sigla',
        $this->strTitleS,
        'Razão Social',
        'CNPJ',
        'Situação',
      );
      
      $this->view->intAtivo = Application_Model_Unidades::IND_ATIVO;
      
      $objDaoModel = new Application_Model_Unidades();
      $objFilter = new Zend_Filter_StripTags();
      
      $strDs = '';
      $strDs2 = '';
      if($this->_request->isPost()){
        $strDs   = $objFilter->filter($this->_request->getPost('ds_sigla')); 
        $strDs2  = $objFilter->filter($this->_request->getPost('ds_unidade'));       
      }
      $arrResult = $objDaoModel->getByNomeESigla($strDs, $strDs2);
      
      $arrList = array();
      $arrRes = array();
      
      if($arrResult){
        foreach($arrResult as $arrData){          
          $arrList['id']            = $arrData['idUnidade'];
          $arrList['sigla']         = $arrData['ds_sigla'];
          $arrList['nome']          = $arrData['ds_unidade'];
          $arrList['razao_social']  = $arrData['ds_razao_social'];
          $arrList['cnpj']          = $arrData['ds_cnpj'];
          $arrList['situacao']      = $arrData['ds_situacao'];
          
          $arrRes[] = $arrList;
        }
      } 
      
      Zend_Paginator::setDefaultScrollingStyle('Sliding');
      Zend_View_Helper_PaginationControl::setDefaultViewPartial('partial/controles_paginador.phtml');
      $paginator = Zend_Paginator::factory($arrRes);
  
      //pagina atual. Se nao vier nenhuma pagina, mostra a primeira
      $currentPage = $this->_getParam('page', 1);
      $paginator->setCurrentPageNumber($currentPage)->setItemCountPerPage(Zend_Registry::getInstance()->config->default->result->per->page);
        
      //manda para a viewer
      $this->view->paginator = $paginator;
      
      //Core_Commons::debugging($arrRes);
      $this->view->objList = $arrRes;
    }
    
    /**
     * Action que adicionará um novo estado.
     */
    public function addAction(){
      $this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      //            ds_situacao    
      //dt_insercao  dt_atualizacao
      
      $arrColunas = array(
        'Sigla' => array(
          'name' => 'ds_sigla', 
          'type' => 'text', 
          'width' => '50', 
          'maxlength' => '5'
        ),
        'Unidade' => array(
          'name' => 'ds_unidade', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '120'
        ),
        'Razão Social'  => array(
          'name'  => 'ds_razao_social',
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'CNPJ'  => array(
          'name'  => 'ds_cnpj',
          'type' => 'text', 
          'width' => '140', 
          'maxlength' => '18'
        ),
        'Endereço' => array(
          'name' => 'nr_unidade', 
          'type' => 'text', 
          'width' => '140', 
          'maxlength' => '20'
        ),
        'Numero' => array(
          'name' => 'ds_endereco', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '180'
        ),
        'Complemento' => array(
          'name' => 'ds_complemento', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '255'
        ),
        'CEP' => array(
          'name' => 'ds_cep', 
          'type' => 'text', 
          'width' => '80', 
          'maxlength' => '10'
        ),
        'Bairro' => array(
          'name' => 'ds_bairro', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '180'
        ),
        'Cidade' => array(
          'name' => 'idCidade', 
          'type'  => 'db_combo', 
          'width' => '250',
          'model' => 'Cidades',
          'value' => 'idCidade',
          'label' => 'ds_cidade'
        ),
        'Telefone' => array(
          'name' => 'ds_fone', 
          'type' => 'text', 
          'width' => '120', 
          'maxlength' => '15'
        ),
        'Site' => array(
          'name' => 'ds_site', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'Logomarca' => array(
          'name' => 'ds_logotipo', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'Diretor' => array(
          'name' => 'idFuncionario', 
          'type'  => 'db_combo', 
          'width' => '250',
          'model' => 'Funcionarios',
          'value' => 'idFuncionario',
          'label' => 'ds_nome'
        ),
        'Situação'    => array(
          'name'    => 'ds_situacao', 
          'type'    => 'combo', 
          'width'   => '250',
          'options' => array(
            '1' => 'Ativo', 
            '0' => 'Inativo'
          )
        ),
        'Inserção'    => array(
          'name'          => 'dt_insercao', 
          'type'          => 'date', 
          'default_value' => date("d/m/Y"),
          'width'         => '80', 
          'maxlength'     => '10'
        ),
      );
            
      $this->view->arrColunas = $arrColunas;
      $objDaoModel = new Application_Model_Unidades();
      if($this->_request->isPost()){
        $this->view->request = $this->_request->getPost();
        try{
          if($objDaoModel->salvar())
            Core_FlashMessage::addMessage($this->strTitleS . ' inserida com sucesso', '1');
          else
            Core_FlashMessage::addMessage('Erro desconhecido ao Inserir a ' . $this->strTitleS . ' no sistema', '4');
            
          $this->_redirect($this->view->controllerName . '/list');
        }
        catch(Exception $objException){
          Core_FlashMessage::addMessage($objException->getMessage(), $objException->getCode());
        }  
      }
    }
    
    public function visualizarAction(){
    	$this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $arrColunas = array(
        'Sigla' => array(
          'name' => 'ds_sigla', 
          'type' => 'text', 
          'width' => '50', 
          'maxlength' => '5'
        ),
        'Unidade' => array(
          'name' => 'ds_unidade', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '120'
        ),
        'Razão Social'  => array(
          'name'  => 'ds_razao_social',
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'CNPJ'  => array(
          'name'  => 'ds_cnpj',
          'type' => 'text', 
          'width' => '140', 
          'maxlength' => '18'
        ),
        'Endereço' => array(
          'name' => 'nr_unidade', 
          'type' => 'text', 
          'width' => '140', 
          'maxlength' => '20'
        ),
        'Numero' => array(
          'name' => 'ds_endereco', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '180'
        ),
        'Complemento' => array(
          'name' => 'ds_complemento', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '255'
        ),
        'CEP' => array(
          'name' => 'ds_cep', 
          'type' => 'text', 
          'width' => '80', 
          'maxlength' => '10'
        ),
        'Bairro' => array(
          'name' => 'ds_bairro', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '180'
        ),
        'Cidade' => array(
          'name' => 'idCidade', 
          'type'  => 'db_combo', 
          'width' => '250',
          'model' => 'Cidades',
          'value' => 'idCidade',
          'label' => 'ds_cidade'
        ),
        'Telefone' => array(
          'name' => 'ds_fone', 
          'type' => 'text', 
          'width' => '120', 
          'maxlength' => '15'
        ),
        'Site' => array(
          'name' => 'ds_site', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'Logomarca' => array(
          'name' => 'ds_logotipo', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'Diretor' => array(
          'name' => 'idFuncionario', 
          'type'  => 'db_combo', 
          'width' => '250',
          'model' => 'Funcionarios',
          'value' => 'idFuncionario',
          'label' => 'ds_nome'
        ),
        'Situação'    => array(
          'name'    => 'ds_situacao', 
          'type'    => 'combo', 
          'width'   => '250',
          'options' => array(
            '1' => 'Ativo', 
            '0' => 'Inativo'
          )
        ),
        'Inserção' => array(
          'name'          => 'dt_insercao', 
          'type'          => 'date', 
          'width'         => '100', 
          'maxlength'     => '5'
        ),
        
        'Atualização' => array(
          'name'          => 'dt_atualizacao', 
          'type'          => 'date', 
          'width'         => '100', 
          'maxlength'     => '5'
        ),
      );
      
      $this->view->arrColunas = $arrColunas;
      $objDaoModel = new Application_Model_Unidades();
      $this->view->request = $objDaoModel->getById($this->_request->getParam('fl'));
    }
    
    /**
     * Action que atualizará um pais específica
     */
    public function editarAction(){
      $this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $arrColunas = array(
        'Sigla' => array(
          'name' => 'ds_sigla', 
          'type' => 'text', 
          'width' => '50', 
          'maxlength' => '5'
        ),
        'Unidade' => array(
          'name' => 'ds_unidade', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '120'
        ),
        'Razão Social'  => array(
          'name'  => 'ds_razao_social',
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'CNPJ'  => array(
          'name'  => 'ds_cnpj',
          'type' => 'text', 
          'width' => '140', 
          'maxlength' => '18'
        ),
        'Endereço' => array(
          'name' => 'nr_unidade', 
          'type' => 'text', 
          'width' => '140', 
          'maxlength' => '20'
        ),
        'Numero' => array(
          'name' => 'ds_endereco', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '180'
        ),
        'Complemento' => array(
          'name' => 'ds_complemento', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '255'
        ),
        'CEP' => array(
          'name' => 'ds_cep', 
          'type' => 'text', 
          'width' => '80', 
          'maxlength' => '10'
        ),
        'Bairro' => array(
          'name' => 'ds_bairro', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '180'
        ),
        'Cidade' => array(
          'name' => 'idCidade', 
          'type'  => 'db_combo', 
          'width' => '250',
          'model' => 'Cidades',
          'value' => 'idCidade',
          'label' => 'ds_cidade'
        ),
        'Telefone' => array(
          'name' => 'ds_fone', 
          'type' => 'text', 
          'width' => '120', 
          'maxlength' => '15'
        ),
        'Site' => array(
          'name' => 'ds_site', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'Logomarca' => array(
          'name' => 'ds_logotipo', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '200'
        ),
        'Diretor' => array(
          'name' => 'idFuncionario', 
          'type'  => 'db_combo', 
          'width' => '250',
          'model' => 'Funcionarios',
          'value' => 'idFuncionario',
          'label' => 'ds_nome'
        ),
        'Situação'    => array(
          'name'    => 'ds_situacao', 
          'type'    => 'combo', 
          'width'   => '250',
          'options' => array(
            '1' => 'Ativo', 
            '0' => 'Inativo'
          )
        ),
        'Inserção' => array(
          'name'          => 'dt_insercao', 
          'type'          => 'date', 
          'default_value' => date("d/m/Y"),
          'width'         => '80', 
          'maxlength'     => '5'
        ),
        
        'Atualização' => array(
          'name'          => 'dt_atualizacao', 
          'type'          => 'date', 
          'default_value' => date("d/m/Y"),
          'width'         => '100', 
          'maxlength'     => '5'
        ),
        'Id'  => array(
          'name'          => 'idUnidade', 
          'type'          => 'hidden', 
        ),
      );
      
      $this->view->arrColunas = $arrColunas;
      $objDaoModel = new Application_Model_Unidades();
      $this->view->request = $objDaoModel->getById($this->_request->getParam('fl'));
      if($this->_request->isPost()){
        try{
          if($objDaoModel->salvar($this->_request->getPost('idUnidade')))
            Core_FlashMessage::addMessage($this->strTitleS . ' atualizada com sucesso', '1');
          else
            Core_FlashMessage::addMessage('Erro desconhecido ao atualizar a ' . $this->strTitleS . '!', '4');
          
          $this->_redirect($this->view->controllerName . '/list');            
        }
        catch(Exception $objException){
          Core_FlashMessage::addMessage($objException->getMessage(), $objException->getCode());
        }
      }
    }
    
    /**
     * Action que atualizará uma unidade de ensino específica, tratando como exclusão
     */
    public function excluirAction(){
      $this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $this->view->strAct = $this->view->controllerName . '/excluir';
      $this->view->strRedirect = $this->view->controllerName . '/list';
      $this->view->strIcon = $this->view->imagens . '/warning.png';
      $this->view->intId = $this->_request->getParam('fl') ;
      
      if($this->_request->isPost()){    
        $this->view->intId = $this->_request->getPost('fl');  
        try{          
          $objDaoModel = new Application_Model_Unidades();
          if($objDaoModel->excluir($this->_request->getPost('id')))
            Core_FlashMessage::addMessage($this->strTitleS . ' excluído com sucesso!', '1');        
          else
            Core_FlashMessage::addMessage('Não foi possível excluir o ' . $this->strTitleS . '!', '2');
              
          $this->_redirect($this->view->controllerName . '/list');      
        }
        catch(Exception $objException){
          Core_FlashMessage::addMessage($objException->getMessage(), '3');
          $this->_redirect($this->view->controllerName . '/list');
        }                                     
      }
    }
  }